《高性能網(wǎng)站建設(shè)指南》閱讀筆記_規(guī)則14- 使Ajax可緩存
發(fā)布時(shí)間:2013-11-22 瀏覽:304打印字號(hào):大中小
簡(jiǎn)單的額說就是使用之前的規(guī)則應(yīng)用于Ajax請(qǐng)求。
很多時(shí)候我們會(huì)發(fā)現(xiàn),當(dāng)發(fā)起主動(dòng)Ajax請(qǐng)求時(shí),可能需要等待。改善這些主動(dòng)Ajax請(qǐng)求的最重要的方式就是使響應(yīng)可緩存。此外前面提到的規(guī)則中,規(guī)則4壓縮組件,規(guī)則9減少DNS查找,規(guī)則10精簡(jiǎn)javascript,規(guī)則11避免重定向,規(guī)則13配置與禁用ETag。
因?yàn)橐?guī)則3使用緩存最重要,所以這里只介紹這一點(diǎn)
書中給的一個(gè)例子是雅虎郵箱的,用戶如果查看沒有將正文下載到本地的郵件,就會(huì)產(chǎn)生一個(gè)主動(dòng)的ajax請(qǐng)求。但是如果關(guān)閉了這個(gè)網(wǎng)站之后又回來,就會(huì)發(fā)送相同的請(qǐng)求。因?yàn)橹暗?span style="font-family:Calibri;">ajax響應(yīng)并沒有保存在瀏覽器緩存中。沒有被緩存的原因是有一個(gè)值為no-store的Cache-Control頭以及一個(gè)日期為過去的Expires頭,這些都告訴瀏覽器不要緩存。如果能使用一個(gè)長(zhǎng)久的Expires頭替換這些頭就會(huì)緩存。但是一般認(rèn)為:這應(yīng)該是一個(gè)動(dòng)態(tài)生成的響應(yīng)只包含這個(gè)世界上的一個(gè)用戶的相關(guān)信息,緩存這些東西似乎是沒有意義的。作者認(rèn)為,一個(gè)用戶可能在一天或一周中多次查看這個(gè)郵件,如果緩存了響應(yīng),就會(huì)看到緩慢的和快速的用戶體驗(yàn)的差距。
當(dāng)然,是這些ajax請(qǐng)求可緩存,除了改變HTTP頭之外還需要更多的工作,響應(yīng)的個(gè)性化和動(dòng)態(tài)本質(zhì)必須反映到緩存中,可以采用的最好方式是使用查詢字符串參數(shù)。例如這個(gè)響應(yīng)只對(duì)當(dāng)前用戶有效可以將用戶名放到查詢字符串中做到這一點(diǎn),還有一點(diǎn)是要反映出確認(rèn)的信息,如具體的哪一封郵件的緩存,可以使用郵件的唯一ID。


